# coding:'utf-8'
'''
全中文
原因：
1.英语差
2.拼音理解慢
3.懒注释
4.使用了VScode   安装了 ‘中文快速输入插件’（https://www.52pojie.cn/forum.php?mod=viewthread&tid=1127596）
[如何评价 python 中文变量名？ - ipid君的回答 - 知乎--------------https://www.zhihu.com/question/393691308/answer/1294504604]
'''
import httpx  # 类似requests的模块
import time
import sys
import os  # 常用模块不用特别注释
from lxml import etree
from urllib import request

主页 = 'http://bbs.lieyou888.com'  # 这次是从介子空间爬的，这个是主页。帖子就只有后半部分要在前面加这个、


def 调用数据(选择):
    if 选择 == '仙女下凡':
        内容选择 = input(
            '选择要爬的资源~\n1.腿玩年（哎呦，大长腿❤）\n2.仙女照（看了也不是你女朋友）\n>>>>>>>>>>>>>>{ ').strip()
        if 内容选择 == '1':
            url = 'http://bbs.lieyou888.com/forum-3-302-1597570408000-0.html'
        elif 内容选择 == '2':
            url = 'http://bbs.lieyou888.com/forum-3-301-1597570408000-0.html'
        else:
            print('输入有勿，判断您是位LSP，自动选择美腿')
            内容选择 = '1'
            url = 'http://bbs.lieyou888.com/forum-3-302-1597570408000-0.html'
    elif 选择 == '话题圈':
        内容选择 = input(
            '选择要爬的资源~\n1.今日话题（看看就好）\n2.今日沙雕（你可能也是其中之一）\n3.渣男渣女（世界之大无奇不有）\n>>>>>>>>>>>>>>{ ').strip()
        if 内容选择 == '1':
            url = 'http://bbs.lieyou888.com/forum-102-10201-0-0.html'
        elif 内容选择 == '2':
            url = 'http://bbs.lieyou888.com/forum-102-10202-0-0.html'
        elif 内容选择 == '3':
            url = 'http://bbs.lieyou888.com/forum-102-10203-0-0.html'
        else:
            print('输入有勿，判断您是渣男（女），自动选择了你的频道')
            内容选择 = '3'
            url = 'http://bbs.lieyou888.com/forum-3-302-1597570408000-0.html'
    elif 选择 == '二次元':
        内容选择 = input('输入你要爬的二次元内容：\n1.动漫图片\n2.cosplay\n>>>>>>[').strip()
        if 内容选择 == '1':
            url = 'http://bbs.lieyou888.com/forum-117-11702-0-0.html'
        elif 内容选择 == '2':
            url = 'http://bbs.lieyou888.com/forum-117-11703-0-0.html'
        else:
            print('输入有勿，判断您是位LSP，自动选择cosplay')
            内容选择 = '2'
            url = 'http://bbs.lieyou888.com/forum-117-11703-0-0.html'
    网页数据 = httpx.get(url=url).text
    网页数据xp = etree.HTML(网页数据)
    return 网页数据xp, 内容选择


def 帖子获取(网页数据):
    标题_i = 网页数据.xpath('//*[@class="gb-list-inner"]/ul/li/div/a')
    短网址 = 网页数据.xpath('//*[@class="gb-list-inner"]/ul/li/div/a/@href')
    return 标题_i, 短网址


def 帖子内容数据(短网址):
    帖子网址 = '{}{}'.format(主页, 短网址)
    帖子数据 = httpx.get(url=帖子网址).text
    帖子数据xp = etree.HTML(帖子数据)
    图片_i = 帖子数据xp.xpath('//*[@class="gb-p-inner"]/img/@original')
    内容_i = 帖子数据xp.xpath('//*[@class="gb-p-inner"]/p//text()')
    内容_i = ''.join(内容_i)
    内容 = 内容_i.strip()
    return 图片_i, 内容


def 仙女下凡区块():
    网页数据xp, 内容选择 = 调用数据('仙女下凡')
    标题_i, 短网址 = 帖子获取(网页数据xp)
    if 内容选择 == '1':
        目录 = "绅士污开/仙女下凡/1-腿玩年/"
    elif 内容选择 == '2':
        目录 = "绅士污开/仙女下凡/2-仙女照/"
    for 标题_i, 短网址 in zip(标题_i, 短网址):
        标题 = 标题_i.text
        标题 = 标题.replace('/', '丨')
        图片_i, 内容 = 帖子内容数据(短网址)
        清屏 = os.system("cls")
        print(标题, '已开始下载~')
        文件全目录 = 目录+标题
        if not os.path.exists(文件全目录):
            os.mkdir(文件全目录)
            with open('{}/{}.txt'.format(文件全目录, 标题), mode='wt', encoding='utf-8') as 内容写入:
                内容写入.write(内容)
            序号 = 1
            for 单图片地址 in 图片_i:
                request.urlretrieve(单图片地址, '{}/{}.jpg'.format(文件全目录, 序号))
                序号 += 1
            print(' '*20, '下载完成~注意身体')
            time.sleep(2)
        else:
            清屏 = os.system("cls")
            print(标题, '已下载完成过')
            time.sleep(1)


def 话题圈区块():
    网页数据xp, 内容选择 = 调用数据('话题圈')
    标题_i, 短网址 = 帖子获取(网页数据xp)
    if 内容选择 == '1':
        目录 = "绅士污开/话题圈/1-今日话题/"
    elif 内容选择 == '2':
        目录 = "绅士污开/话题圈/2-今日沙雕/"
    elif 内容选择 == '3':
        目录 = "绅士污开/话题圈/3-渣男渣女/"
    for 标题_i, 短网址 in zip(标题_i, 短网址):
        标题 = 标题_i.text
        标题 = 标题.replace('/', '丨')

        帖子网址 = '{}{}'.format(主页, 短网址)
        帖子数据 = httpx.get(url=帖子网址).text
        帖子数据xp = etree.HTML(帖子数据)
        图片_i = 帖子数据xp.xpath('//*[@class="gb-p-inner"]/img/@src')
        内容_i = 帖子数据xp.xpath('//*[@class="gb-p-inner"]/p//text()')
        内容_i = ''.join(内容_i)
        内容 = 内容_i.strip()
        清屏 = os.system("cls")
        print(标题, '已开始下载~')
        文件全目录 = 目录+标题
        if not os.path.exists(文件全目录):
            os.mkdir(文件全目录)
            with open('{}/{}.txt'.format(文件全目录, 标题), mode='wt', encoding='utf-8') as 内容写入:
                内容写入.write(内容)
            序号 = 1
            for 单图片地址 in 图片_i:
                if 单图片地址 != '/resources/img/loading.jpg':
                    request.urlretrieve(单图片地址, '{}/{}.jpg'.format(文件全目录, 序号))
                    序号 += 1
            print(' '*20, '下载完成~拿好小板凳，拿着西瓜，慢慢吃。')
            time.sleep(2)
        else:
            清屏 = os.system("cls")
            print(标题, '已下载完成过')
            time.sleep(1)


def 二次元区块():
    网页数据xp, 内容选择 = 调用数据('二次元')
    标题_i, 短网址 = 帖子获取(网页数据xp)
    if 内容选择 == '1':
        目录 = "绅士污开/二次元/1-动漫图片/"
    elif 内容选择 == '2':
        目录 = "绅士污开/二次元/2-cosplay/"
    for 标题_i, 短网址 in zip(标题_i, 短网址):
        标题 = 标题_i.text
        标题 = 标题.replace('/', '丨')
        帖子网址 = '{}{}'.format(主页, 短网址)
        帖子数据 = httpx.get(url=帖子网址).text
        帖子数据xp = etree.HTML(帖子数据)
        图片_i = 帖子数据xp.xpath('//*[@class="gb-p-inner"]/img/@src')
        内容_i = 帖子数据xp.xpath('//*[@class="gb-p-inner"]/p//text()')
        内容_i = ''.join(内容_i)
        内容 = 内容_i.strip()
        清屏 = os.system("cls")
        print(标题, '已开始下载~')
        文件全目录 = 目录+标题
        if not os.path.exists(文件全目录):
            os.mkdir(文件全目录)
            with open('{}/{}.txt'.format(文件全目录, 标题), mode='wt', encoding='utf-8') as 内容写入:
                内容写入.write(内容)
            序号 = 1
            for 单图片地址 in 图片_i:
                if 单图片地址 != '/resources/img/loading.jpg':
                    request.urlretrieve(单图片地址, '{}/{}.jpg'.format(文件全目录, 序号))
                    序号 += 1
            print(' '*20, '下载完成~注意身体')
            time.sleep(2)
        else:
            清屏 = os.system("cls")
            print(标题, '已下载完成过')
            time.sleep(1)


def 主程序():
    清屏 = os.system("cls")  # 多次使用，只为美观~
    while 1:
        区块选择 = input('\033[0;31m请输入要选择的区块!\033[0m\n\033[0;33m1.仙女下凡（注意身体）\033[0m\n\033[0;36m2.话题（拿好小板凳）\033[0m\n\033[0;35m3.二次元（老婆又出新款了）\033[0m\n\033[4;32m4.退出（这，这么骚，老色批你真的舍得吗？？）\033[0m\n\033[0;31;37m>>>>>>>>>>>>>>>>>> \033[0m').strip()
        if not 区块选择.isdigit():
            print('必须输入数字，傻X')
            time.sleep(1)
            清屏 = os.system("cls")
            continue
        if 区块选择 == '1':
            仙女下凡区块()
        elif 区块选择 == '2':
            话题圈区块()
        elif 区块选择 == '3':
            二次元区块()
        elif 区块选择 == '4':
            break
        else:
            print('输入范围内的，中文懂？')
            time.sleep(1)
            清屏 = os.system("cls")


def 初始化():
    if not os.path.exists("绅士污开"):
        print('检测到第一次运行，开始初始化~')
        os.mkdir("绅士污开")
        os.mkdir("绅士污开/仙女下凡")
        os.mkdir("绅士污开/话题圈")
        os.mkdir("绅士污开/二次元")
        os.mkdir("绅士污开/仙女下凡/1-腿玩年")
        os.mkdir("绅士污开/仙女下凡/2-仙女照")
        os.mkdir("绅士污开/话题圈/1-今日话题")
        os.mkdir("绅士污开/话题圈/2-今日沙雕")
        os.mkdir("绅士污开/话题圈/3-渣男渣女")
        os.mkdir("绅士污开/二次元/1-动漫图片")
        os.mkdir("绅士污开/二次元/2-cosplay")
        time.sleep(1)


if __name__ == "__main__":
    初始化()
    主程序()
